package com.opencore.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.opencore.dto.DteDocumentoDTO;
import com.opencore.util.ConexionSQL;

public class DocumentoDAO {
	private static PreparedStatement ps = null;
	private static ResultSet rs = null;
	private static Connection con = null;
	
	public List getDocByNroDoc(String numeroDoc) throws SQLException, ClassNotFoundException{
		con = ConexionSQL.crearConeccionSQL();
		List<DteDocumentoDTO>  listDoc = new ArrayList<DteDocumentoDTO>();
		DteDocumentoDTO  linea = new DteDocumentoDTO();
		try {
			ps = con.prepareStatement("select  DISTINCT(nro_documento), tipo_documento," +
					" ISNULL(estado_ultimo, 0), Convert(varchar(10), fecha_emision, 103) As Fecha  from  DTE_DOCUMENTO " +
					" where nro_linea = 0 and  NRO_DOCUMENTO = "+numeroDoc);
			System.out.println("select nro_documento, tipo_documento," +
					" ISNULL(estado_ultimo, 0), Convert(varchar(10), fecha_emision, 103) As Fecha  from  DTE_DOCUMENTO " +
					" where nro_linea = 0 and  NRO_DOCUMENTO = "+numeroDoc);
			rs = ps.executeQuery();
			while(rs.next()) {
				linea = new DteDocumentoDTO();
				linea.setNroDocumento(rs.getString(1));				
				linea.setTipoDocumento(rs.getString(2));
				linea.setEstadoUltimo(rs.getString(3));	
				linea.setFechaEmision(rs.getString(4));
				listDoc.add(linea);
			}			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			if(rs != null)
				rs.close();
			if(ps != null)
				ps.close();
			ConexionSQL.cierraConeccion();
		}
		return listDoc;
	}
	
	public List getDocByRangoNroDoc(String numeroDoc, String numeroDoc2) throws SQLException, ClassNotFoundException{
		con = ConexionSQL.crearConeccionSQL();
		List<DteDocumentoDTO>  listDoc = new ArrayList<DteDocumentoDTO>();
		DteDocumentoDTO  linea = new DteDocumentoDTO();
		try {
			ps = con.prepareStatement("select  DISTINCT(nro_documento), tipo_documento," +
					" ISNULL(estado_ultimo, 0), Convert(varchar(10), fecha_emision, 103) As Fecha  from  DTE_DOCUMENTO " +
					" where nro_linea = 0 and  nro_documento between "+ numeroDoc +" and " + numeroDoc2 +" order by nro_documento");
			
			System.out.println("select  DISTINCT(nro_documento), tipo_documento," +
					" ISNULL(estado_ultimo, 0), Convert(varchar(10), fecha_emision, 103) As Fecha  from  DTE_DOCUMENTO " +
					" where nro_linea = 0 and  nro_documento between "+ numeroDoc +" and " + numeroDoc2 +" order by nro_documento");
			
			rs = ps.executeQuery();
			while(rs.next()) {
				linea = new DteDocumentoDTO();
				linea.setNroDocumento(rs.getString(1));				
				linea.setTipoDocumento(rs.getString(2));
				linea.setEstadoUltimo(rs.getString(3));	
				linea.setFechaEmision(rs.getString(4));
				listDoc.add(linea);
			}			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			if(rs != null)
				rs.close();
			if(ps != null)
				ps.close();
			ConexionSQL.cierraConeccion();
		}
		return listDoc;
	}
	
	public List getDocByFecha(String fecha) throws SQLException, ClassNotFoundException{
		con = ConexionSQL.crearConeccionSQL();
		List<DteDocumentoDTO>  listDoc = new ArrayList<DteDocumentoDTO>();
		DteDocumentoDTO  linea = new DteDocumentoDTO();
		try {
			ps = con.prepareStatement("select nro_documento, tipo_documento, ISNULL(estado_ultimo, 0)," +
					" Convert(varchar(10), fecha_emision, 103) As Fecha  from  DTE_DOCUMENTO  where nro_linea = 0 and fecha_emision = '"+fecha+"'");
				
			System.out.println("select nro_documento, tipo_documento, ISNULL(estado_ultimo, 0)," +
					" Convert(varchar(10), fecha_emision, 103) As Fecha  from  DTE_DOCUMENTO  where nro_linea = 0 and fecha_emision = '"+fecha+"'");
			rs = ps.executeQuery();
			while(rs.next()) {
				linea = new DteDocumentoDTO();
				linea.setNroDocumento(rs.getString(1));				
				linea.setTipoDocumento(rs.getString(2));
				linea.setEstadoUltimo(rs.getString(3));	
				linea.setFechaEmision(rs.getString(4));
				listDoc.add(linea);
			}			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			if(rs != null)
				rs.close();
			if(ps != null)
				ps.close();
			ConexionSQL.cierraConeccion();
		}
		return listDoc;
	}
	
	public List getDocByRangoFecha(String fecha1, String fecha2) throws SQLException, ClassNotFoundException{
		con = ConexionSQL.crearConeccionSQL();
		List<DteDocumentoDTO>  listDoc = new ArrayList<DteDocumentoDTO>();
		DteDocumentoDTO  linea = new DteDocumentoDTO();
		try {
			ps = con.prepareStatement("select nro_documento, tipo_documento, ISNULL(estado_ultimo, 0)," +
					" Convert(varchar(10), fecha_emision, 103) As Fecha  from  DTE_DOCUMENTO  where nro_linea = 0 and fecha_emision between '"+fecha1+"' and '"+fecha2+"' order by nro_documento");
				
			System.out.println("select nro_documento, tipo_documento, ISNULL(estado_ultimo, 0)," +
					" Convert(varchar(10), fecha_emision, 103) As Fecha  from  DTE_DOCUMENTO  where nro_linea = 0 and fecha_emision between '"+fecha1+"' and '"+fecha2+"' order by nro_documento");
			rs = ps.executeQuery();
			while(rs.next()) {
				linea = new DteDocumentoDTO();
				linea.setNroDocumento(rs.getString(1));				
				linea.setTipoDocumento(rs.getString(2));
				linea.setEstadoUltimo(rs.getString(3));	
				linea.setFechaEmision(rs.getString(4));
				listDoc.add(linea);
			}			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			if(rs != null)
				rs.close();
			if(ps != null)
				ps.close();
			ConexionSQL.cierraConeccion();
		}
		return listDoc;
	}
	
}
